import request from '@/utils/request'

/**
 * 处理资源数据，确保类型字段有正确的值
 * @param {Object|Array} data 资源数据或资源数据数组
 * @returns {Object|Array} 处理后的数据
 */
function processResourceType(data) {
  // 如果是分页数据
  if (data && data.records && Array.isArray(data.records)) {
    data.records = data.records.map(item => {
      return processResourceItem(item);
    });
    return data;
  } 
  // 如果是单个资源对象
  else if (data && typeof data === 'object') {
    return processResourceItem(data);
  }
  return data;
}

/**
 * 处理单个资源项，修复字段值
 * @param {Object} item 资源对象
 * @returns {Object} 处理后的资源对象
 */
function processResourceItem(item) {
  if (!item) return item;
  
  // 处理type字段
  if (item.type === null || item.type === undefined) {
    console.warn(`[API自动修复] 资源ID:${item.id} 的type字段为null，已设为默认值1(免费)`);
    item.type = 1;
  } else {
    // 确保type是数字类型
    item.type = parseInt(item.type, 10);
    console.log(`[API处理] 资源ID:${item.id} 的type字段值为${item.type}, 类型:${typeof item.type}`);
  }
  
  // 当type为2(积分)时，确保points字段有值
  if (item.type === 2 && (item.points === null || item.points === undefined)) {
    console.warn(`[API自动修复] 积分资源ID:${item.id} 的points字段为空，已设为默认值10`);
    item.points = 10;
  }
  
  // 当type为3(付费)时，确保price字段有值
  if (item.type === 3 && (item.price === null || item.price === undefined)) {
    console.warn(`[API自动修复] 付费资源ID:${item.id} 的price字段为空，已设为默认值1`);
    item.price = 1;
  }
  
  // 处理description字段，确保不为null
  if (item.description === null || item.description === undefined) {
    console.warn(`[API自动修复] 资源ID:${item.id} 的description字段为null，设置默认描述`);
    
    // 根据资源ID设置特定描述
    if (item.id === 2) {
      item.description = "学习资料，包含各种编程语言的教程和实例";
    } else if (item.id === 3) {
      item.description = "看了之后都上清华北大了";
    } else if (item.id === 4) {
      item.description = "这个资源很懒，什么也没描述";
    } else {
      // 根据资源名称生成默认描述
      item.description = `${item.name || '资源'}的详细介绍，包含完整的内容和使用说明。`;
    }
  }
  
  return item;
}

/**
 * 获取资源列表
 */
export function getResourcesApi(params) {
  return request({
    url: '/api/resource/list',
    method: 'get',
    params
  }).then(res => {
    if (res.data) {
      res.data = processResourceType(res.data);
    }
    return res;
  });
}

/**
 * 添加资源
 */
export function addResourceApi(data) {
  // 确保关键字段有正确的值
  const processedData = {
    ...data,
    type: parseInt(data.type, 10) || 2, // 默认使用2(积分类型)
    points: data.type === 2 ? (data.points || 10) : 0, // 如果是积分类型但没有分数，默认10
    status: data.status || 2 // 默认状态为2
  };
  
  console.log("API处理后提交的数据:", processedData);
  
  return request({
    url: '/api/resource/add',
    method: 'post',
    data: processedData
  })
} 

/**
 * 验证码验证
 */
export function verifyCodeApi(data) {
  return request({
    url: '/api/resource/verify',
    method: 'get',
    params: data
  })
}

/**
 * 获取资源详情
 */
export function getResourceDetailApi(id) {
  return request({
    url: `/api/resource/${id}`,
    method: 'get'
  }).then(res => {
    if (res.code === 200 && res.data) {
      console.log('API原始数据:', JSON.stringify(res.data));
      res.data = processResourceType(res.data);
      console.log('API处理后数据:', JSON.stringify(res.data));
    }
    return res;
  });
}

/**
 * 下载资源（获取下载链接）
 */
export function downloadResourceApi(id) {
  return request({
    url: `/api/resource/download/${id}`,
    method: 'get'
  })
}

/**
 * 检查用户是否有权限下载资源
 */
export function checkDownloadPermissionApi(id) {
  return request({
    url: `/api/resource/check-permission/${id}`,
    method: 'get'
  })
}

/**
 * 使用积分兑换资源下载权限
 */
export function exchangeResourceApi(id) {
  return request({
    url: `/api/resource/exchange/${id}`,
    method: 'post'
  })
}

/**
 * 获取我上传的资源
 */
export function getMyResourcesApi(params) {
  return request({
    url: '/api/resource/my-resources',
    method: 'get',
    params
  })
}

/**
 * 获取我下载的资源
 */
export function getMyDownloadsApi(params) {
  return request({
    url: '/api/resource/my-downloads',
    method: 'get',
    params
  })
}

/**
 * 删除资源
 */
export function deleteResourceApi(id) {
  return request({
    url: `/api/resource/${id}`,
    method: 'delete'
  })
}

